Traductores e Intérpretes UCAB : Analisis Sintactico Formal
This page last changed on Oct 27, 2006 by juanca.
Repaso
Ejercicios
Definición Formal de Análisis Sintáctico (Parse)Dada una gramática G, nos enfrentamos con dos problemas:
Los Autómatas Finitos resuelven el problema de membresía para los Lenguajes Regulares, y los Autómatas de Pila lo resuelven para los Lenguajes Independientes del Contexto. Conocemos cómo implementar autómatas finitos de manera eficiente. Ahora estudiaremos cómo implementar autómatas de pila, y como resolver el problema de Derivacion. Analizador SintácticoDada una Gramatica Independiente del Contexto G=(Σ,N,P,S) y una frase de entrada w ∈ Σ*, un Analizador Sintáctico (Parser) intenta encontrar una derivación (o un árbol de derivación) para la frase. Análisis Sintáctico DescendenteDada una gramática libre de contexto G=(Σ,N,P,S) y una frase de entrada w ∈ Σ*, un Analizador Sintáctico Descendente (Top-Down Parser) intenta encontrar una derivación izquierda de la frase partiendo del símbolo no-terminal inicial S y reemplazando el no-terminal más a la izquierda por el lado derecho de una producción que tenga a ese no-terminal por lado izquierdo. ConfiguraciónUna configuración es una tupla que describe el estado de una máquina o procedimiento de análisis sintáctico en un momento dado. En el caso del Analisis Sintactico Descendente, dada una gramática G=(Σ,N,P,S), una configuración es una tupla:
donde:
Y donde w es la parte de la cadena de entrada que queda por consumir, Xa es una forma sentencial obtenida mediante una derivación izquierda, y X es el símbolo más a la izquierda en dicha sentencia, y Π es la secuencia de producciones que produjeron dicha derivación. El símbolo $ es un nuevo símbolo que no está en S ni en N, y que usamos para denotar tanto el final de la secuencia de entrada como el de la forma sentencial. Movimientos o CómputosUn movimiento (o cómputo) en una derivación es el paso de una configuración a otra, y se indica por el símbolo ├─. Los símbolos ├─ *, ├─ +, y ├─ k tienen los significados usuales. Derivaciones y ConfiguracionesCon las configuraciones podemos describir de manera conveniente un proceso de derivación:
EjemploDada la gramática
Hecho eso, podemos usar configuraciones para describir el proceso de análisis descendente de la frase de entrada: ((a)(a)a).
Como la derivación anterior demuestra, el análisis sintáctico descendente recursivo con retroceso (ASDRR) puede ser un proceso costoso incluso para gramáticas y frases de entrada sencillas. En particular, un ASDRR puede realizar una cantidad enorme de trabajo antes de darse cuenta que la decisión tomada en uno de los pasos iniciales fue equivocada. Análisis Sintáctico AscendenteUn Analizador Sintáctico Ascendente (Bottom-Up Parser) intenta encontrar una derivación derecha de la frase buscando lados derechos de producciones y reemplazándolos en cada paso por el no-terminal en el lado derecho correspondiente, hasta lograr una sustitución que produzca solo el símbolo inicial S. El análisis ascendente consiste en partir desde una cadena buscando desde los elementos terminales (hojas) las producciones que generan esa cadena, intentando encontrar la raíz del árbol de derivación (axioma). EjemploDada la gramática sobre el alfabeto que incluye paréntesis y la letra "a":
Un analizador sintáctico ascendente llevaría a cabo los siguientes pasos para encontrar una derviación de la frase ((a)(a)a):
|
Document generated by Confluence on Oct 04, 2010 11:24 |